using System;
using System.Drawing;
using System.Web.UI.WebControls;
using Academia.BI;
using Page=System.Web.UI.Page;

public partial class Pagamento : Page
{
    #region Constants

    private const string ALL_TEXT = "[Todos]";

    #endregion

    #region Methods

    #region Private

    #region Prepare DropDownList cbPessoa

    private void preparePessoa()
    {
        if (cbPessoa.Items.FindByText(ALL_TEXT) == null)
        {
            cbPessoa.DataBind();
            var listItem = new ListItem(ALL_TEXT, "-1");
            cbPessoa.Items.Insert(0, listItem);
        }
    }

    #endregion

    #endregion

    #region Event Handlers

    #region Page_Load

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!(Page.IsPostBack))
        {
            preparePessoa();
            if (Request["key1"] != String.Empty && Request["key1"] != null)
            {
                ListItem it = cbPessoa.Items.FindByValue(Request["key1"]);
                if (it != null)
                    cbPessoa.SelectedValue = Request["key1"];
            }
        }
    }

    #endregion

    #region chkSelect_CheckedChanged

    protected void chkSelect_CheckedChanged(object sender, EventArgs e)
    {
        double total = 0;
        foreach (GridViewRow row in grdMain.Rows)
        {
            var chkSelect = (CheckBox) row.Cells[0].FindControl("chkSelect");
            if (chkSelect.Checked)
            {
                var lblValor = (Label) row.FindControl("lblValor");
                total += Convert.ToDouble(lblValor.Text);
            }
        }
        lblTotal.Text = total.ToString("n");
    }

    #endregion

    #region grdMain_DataBound

    protected void grdMain_DataBound(object sender, EventArgs e)
    {
        foreach (GridViewRow row in grdMain.Rows)
        {
            var lblValor = (Label) row.Cells[5].FindControl("lblValor");
            var lblVencimento = (Label) row.Cells[6].FindControl("lblVencimento");
            if (lblValor != null && lblVencimento != null)
            {
                if (lblVencimento.Text.Trim() != "")
                {
                    int compare = DateTime.Compare(DateTime.Now, Convert.ToDateTime(lblVencimento.Text.Trim()));
                    if (compare < 0)
                    {
                        lblVencimento.ForeColor = Color.Blue;
                        lblValor.ForeColor = Color.Blue;
                    }
                    else
                    {
                        lblValor.ForeColor = Color.Red;
                        lblVencimento.ForeColor = Color.Red;
                    }
                }
            }
        }
    }

    #endregion

    #region lnkExecutarPagamento_Click

    protected void lnkExecutarPagamento_Click(object sender, EventArgs e)
    {
        string selecionados = "";
        foreach (GridViewRow row in grdMain.Rows)
        {
            var chkSelect = (CheckBox) row.Cells[0].FindControl("chkSelect");
            if (chkSelect.Checked)
            {
                var lblPessoaDespesaID = (Label) row.Cells[1].FindControl("lblPessoaDespesaID");
                string sqlUpdate =
                    String.Format(
                        "Update PessoaDespesa SET FormaPagamento = '{0}', DiaPagamento = GetDate(), Pago = 1 WHERE PessoaDespesaID = {1}",
                        cbFormaPagamento.SelectedItem.Text, lblPessoaDespesaID.Text.Trim());
                if (selecionados == "")
                    selecionados += lblPessoaDespesaID.Text;
                else
                    selecionados += "," + lblPessoaDespesaID.Text;

                SqlDataManager.ExecuteNonQuery(sqlUpdate);

                grdMain.DataBind();
            }
        }

        if (chkRecibo.Checked)
        {
            string scriptPopup =
                @"
            					<script>
            					<!--
            						openWindow('../Relatorios/Recibo.aspx?recibos=" +
                selecionados + @"&pessoaID=" + cbPessoa.SelectedItem.Value +
                @"',350,300);
            					-->
            					</script>";
            if (!Page.ClientScript.IsClientScriptBlockRegistered("imprimeRecibo"))
                Page.RegisterClientScriptBlock("imprimeRecibo", scriptPopup);
        }
    }

    #endregion

    #region btnFilter_OnClick

    protected void btnFilter_OnClick(object sender, EventArgs e)
    {
        try
        {
            string sqlCommand =
                @"
                        SELECT 
                            [PessoaDespesaID], 
                            [Tipo], 
                            [Nome], 
                            [DiaVencimento], 
                            [Quantidade], 
                            [Valor], 
                            [FormaPagamento], 
                            [DiaPagamento]
                        FROM 
                            [PessoaDespesa] 
                        {REPLACE}
                        ORDER BY 
                            [DiaVencimento], 
                            [Tipo], 
                            [Nome]
";

            //            (
            //    ([PessoaID] = @PessoaID) AND 
            //    ([Pago] = @Pago)
            //) 

            string condtions = "";
            if (cbPessoa.SelectedIndex > 0)
                condtions += string.Format("PessoaID = {0}", cbPessoa.SelectedValue) + " AND ";

            condtions += string.Format("Pago = {0} AND ", rblStatus.SelectedIndex);
            condtions = condtions.Substring(0, condtions.Length - 5);
            sqlCommand = sqlCommand.Replace("{REPLACE}", " WHERE " + condtions);

            dsPessoaDespesa.SelectCommand = sqlCommand;
            dsPessoaDespesa.DataBind();
            grdMain.DataBind();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    #endregion

    protected void lnkImprimeRecibos_Click(object sender, EventArgs e)
    {
        try
        {
            string selecionados = "";
            foreach (GridViewRow row in grdMain.Rows)
            {
                var chkSelect = (CheckBox) row.Cells[0].FindControl("chkSelect");
                if (chkSelect.Checked)
                {
                    var lblPessoaDespesaID = (Label) row.Cells[1].FindControl("lblPessoaDespesaID");
                    if (selecionados == "")
                        selecionados += lblPessoaDespesaID.Text;
                    else
                        selecionados += "," + lblPessoaDespesaID.Text;

                    grdMain.DataBind();
                }
            }
            string scriptPopup =
                @"
        					<script>
        					<!--
        						openWindow('../Relatorios/Recibo.aspx?recibos=" +
                selecionados + @"&pessoaID=" + cbPessoa.SelectedItem.Value +
                @"',350,300);
        					-->
        					</script>";
            if (!Page.ClientScript.IsClientScriptBlockRegistered("imprimeRecibo"))
                Page.RegisterClientScriptBlock("imprimeRecibo", scriptPopup);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    #endregion

    #endregion
}